//
//  SKYEventAttemperEngine.h
//  SKYStockWarning
//
//  Created by Walker on 2016/10/21.
//  Copyright © 2016年 Touker. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 定时器使用注意事项：
 1.这个类管理整个App需要定时分发的事件，通过registerAction方法注册。
 2.要遵循谁注册的事件谁管理原则，不要轻易的操作：suspendEventAttemper、restartEventAttemper、removeAllEvent方法
 3.要明白在注册表中的事件，每1s周期内都会遍历到，至于该事件是否响应要看该事件是否有效（有效：响应，无效：不响应）。
 */
@interface SKYEventAttemperEngine : NSObject

+ (SKYEventAttemperEngine *)sharedInstance;
/**
 注册事件循环
 
 @param block 事件
 @param timer 事件循环时间长度，以秒为单位，最短时间为1s
 @param name  事件名称
 */
-(void)registerAction:(void(^)(void))block timer:(int)timer name:(NSString *)name;
- (void)registerAction:(void(^)(void))block timer:(int)timer name:(NSString *)name isValid:(BOOL)isVaild;

/**
 使某个事件开始、停止循环分发
 
 @param isvalid 是否有效 YES：有效、NO：无效
 @param name    事件名称
 */
-(void)setValid:(BOOL)isvalid ForName:(NSString *)name;

/**
 修改某个事件的调用周期
 
 @param timer 调用周期
 @param name 事件名称
 */
- (void)setTimer:(int)timer ForName:(NSString *)name;

/**
 移除所有的事件，谨慎调用，此方法会导致app中所有定时循环事件移除
 */
- (void)removeAllEvent;

/**
 移除指定事件
 
 @param name 事件名称
 */
- (void)removeEventWithName:(NSString *)name;

/**
 暂停所有事件分发，谨慎调用，此方法会导致app中所有事件暂停分发
 */
- (void)suspendEventAttemper;

/**
 重新开始所有事件分发，谨慎调用，此方法会导致app中所有事件启动分发
 */
-(void)restartEventAttemper;

@end

